//
//  main.cpp
//  Queue
//
//  Created by chenyh on 2021/2/4.
//

#include <iostream>
#include "Queue.hpp"
#include "Stack.hpp"
#include "QueueFromStack.hpp"
using namespace std;

/*
 
 int main(int argc, const char * argv[]) {
     Queue<int> queue = Queue<int>(6);
     for (int i = 0; i < 6; i++) { //创建队列结构
         queue.insert(i*3);        //循环插入数据
     }
     
     for (int i = 0; i<6; i++) {
         int temp = queue.delElement(); //出队并输出数据
         cout<<temp<<"   ";
     }
     cout<<endl;
     return 0;
 }

 */
/**
 【例 1-10】请设计程序实现利用栈构造队列。 【分析】我们知道栈的特点是元素先进后出(FILO)，而队列的
 图 1-17 运行结果
  特点是元素先进先出(FIFO)。题目要求利用栈去构造队列，实际 就是要我们将栈的先进后出的特点通过一系列的变化实现元素的先进先出(FIFO)。要实 现这种功能的转变，通常的做法就是设置两个栈，一个负责入队操作，要出队的时候将入 队操作的栈中的元素出栈，并依次入第二个栈，然后对第二个栈出栈，即实现了“出队” 操作，“出队”之后将第二个栈中的元素倒回第一个元素。
 */
int main(int argc, const char * argv[]) {
    
    QueueFromStack<int> qs(12);
    cout<<"入队元素："<<endl;
    for (int i = 1; i <= 12; i++) {
        cout << i*i << " ";
        qs.push(i*i);
    }
    cout<<endl;
    cout<<"出栈元素："<<endl;
    for (int i=1; i<=12; i++) {
        cout<<qs.pop()<<" ";
    }
    cout<<endl;
    return 0;
    
    
}
